/*
 * ExceptionHandler.java
 * 作者：杨成科
 * 2012-9-22 创建文件
 */
package com.iccboy.demo.basic.exception;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.iccboy.demo.basic.constant.SystemConstant;
import com.iccboy.demo.basic.utils.StringUtils;

/**
 **************************************************
 * 异常处理工具类
 *                                 
 * @version 0.0.1    
 * @author  Ckyang                                                                 
 *************************************************
 */
public class ExceptionHandler {

	/**
	 * 日志对象
	 */
	public static Logger logger = LoggerFactory.getLogger(ExceptionIntercepter.class);
	
	/**
	 * 取得所有异常信息
	 * @param e
	 * @return 异常信息
	 * @since 0.0.1
	 * @author Ckyang 2012-9-22 创建方法
	 */
	public static String getExceptionMessage(Exception e){
		//业务异常
		if (e instanceof ApplicationException) {
			ApplicationException ae = (ApplicationException) e;
			if(StringUtils.isEmpty(ae.getMessage())){
				return SystemConstant.SYS_ERROR;
			}
			return ae.getMessage();
		//系统异常
		} else {
			return SystemConstant.SYS_ERROR;
		}
	} 
	
	
	/**
	 * 取得业务异常信息，并记录日志
	 * @param e
	 * @return 异常信息
	 * @since 0.0.1
	 * @author Ckyang 2012-9-22 创建方法
	 */
	public static String getAppExceptionMessage(Exception e){
		//业务异常
		if (e instanceof ApplicationException) {
			ApplicationException ae = (ApplicationException) e;
			if(StringUtils.isEmpty(ae.getMessage())){
				//日志处理
				logger.error(SystemConstant.getSysExceptionHit(),e);
				throw new RuntimeException(e);
			}
			//日志处理
			logger.error(SystemConstant.getAppExceptionHit(),ae);
			return ae.getMessage();
		//系统异常
		} else {
			//日志处理
			logger.error(SystemConstant.getSysExceptionHit(),e);
			throw new RuntimeException(e);
		}
	} 
}
